﻿using Newtonsoft.Json;
using ThresholdAssistant.Enums;
using System;
using System.Text.Json.Serialization;

namespace ThresholdAssistant.DataContract.Headers
{
    /// <summary>
    /// 头部信息
    /// </summary>
    [Serializable]
    public class RobotHeaderModel
    {
        /// <summary>
        /// 签名:sign=MD5(公共参数的值[按参数名升序排列]-sign+业务参数 +key）
        ///空值不参与签名
        ///举例：MD5(1720180190122020011300400197DeviceUserLogUpdateios_protocol1.1.0wxid_0p2pujkqnz3e2iPad7.0.4{ json数据}key)
        ///安卓协议：05AB8401054A00DD6CD3BB3BCDFAAD4E  qqAndroidprotocol 的 md5值
        /// PC协议：18E459AB1D16193C2377F0DA705338E8  Windows协议版PC 的 md5值
        /// </summary>
        [JsonProperty("sign"), JsonPropertyName("sign")]
        public string Sign { get; set; }


        /// <summary>
        /// 设备编号
        /// </summary>
        [JsonProperty("device_no"), JsonPropertyName("device_no")]
        public string DeviceNo { get; set; }

        /// <summary>
        /// 设备类型
        /// </summary>
        [JsonProperty("device_type"), JsonPropertyName("device_type")]
        public DeviceTypeEnum DeviceType { get; set; }

        /// <summary>
        /// 控制台版本
        /// </summary>
        [JsonProperty("app_version"), JsonPropertyName("app_version")]
        public string AppVersion { get; set; }

        /// <summary>
        /// 机器人Id
        /// </summary>
        [JsonProperty("robot_id"), JsonPropertyName("robot_id")]
        public string RobotId { get; set; }

        /// <summary>
        /// 程序编号
        /// </summary>
        [JsonProperty("user_serial_no"), JsonPropertyName("user_serial_no")]
        public string UserSerialNo { get; set; }

        /// <summary>
        /// 大版本
        /// eg:8.0.3
        /// </summary>
        [JsonProperty("large_version"), JsonPropertyName("large_version")]
        public string LargeVersion { get; set; }

        /// <summary>
        /// 小版本
        /// eg:1
        /// </summary>
        [JsonProperty("small_version"), JsonPropertyName("small_version")]
        public string SmallVersion { get; set; }

        /// <summary>
        /// 协议类型
        /// 1/IPAD协议
        /// 2/IPHONE协议
        /// 3/Android模拟器
        /// 4/Android协议
        /// 5/安卓盒子协议
        /// 6/Windows协议
        /// 7/群卫士协议
        /// 8/安卓真机
        /// 9/windows协议版
        /// 10/安卓协议_新
        /// 11/拼多多分身windows协议
        /// 12/Mac协议
        /// </summary>
        [JsonProperty("protocol_type"), JsonPropertyName("protocol_type")]
        public RobotProtocolType ProtocolType { get; set; }
    }
}